import 'snooperKWLexersym.dart';
import 'package:lpg2/lpg2.dart';
 class snooperKWLexerprs implements ParseTable {
    static const  int ERROR_SYMBOL = 0;
    int   getErrorSymbol(){ return ERROR_SYMBOL; }

    static const  int SCOPE_UBOUND = 0;
    int   getScopeUbound(){ return SCOPE_UBOUND; }

    static const  int SCOPE_SIZE = 0;
    int   getScopeSize(){ return SCOPE_SIZE; }

    static const  int MAX_NAME_LENGTH = 0;
    int   getMaxNameLength(){ return MAX_NAME_LENGTH; }

    static const  int NUM_STATES = 280;
    int   getNumStates(){ return NUM_STATES; }

    static const  int NT_OFFSET = 40;
    int   getNtOffset(){ return NT_OFFSET; }

    static const  int LA_STATE_OFFSET = 420;
    int   getLaStateOffset(){ return LA_STATE_OFFSET; }

    static const  int MAX_LA = 1;
    int   getMaxLa(){ return MAX_LA; }

    static const  int NUM_RULES = 68;
    int   getNumRules(){ return NUM_RULES; }

    static const  int NUM_NONTERMINALS = 2;
    int   getNumNonterminals(){ return NUM_NONTERMINALS; }

    static const  int NUM_SYMBOLS = 42;
    int   getNumSymbols(){ return NUM_SYMBOLS; }

    static const  int START_STATE = 69;
    int   getStartState(){ return START_STATE; }

    static const  int IDENTIFIER_SYMBOL = 0;
    int   getIdentifier_SYMBOL(){ return IDENTIFIER_SYMBOL; }

    static const  int EOFT_SYMBOL = 26;
    int   getEoftSymbol(){ return EOFT_SYMBOL; }

    static const  int EOLT_SYMBOL = 41;
    int   getEoltSymbol(){ return EOLT_SYMBOL; }

    static const  int ACCEPT_ACTION = 351;
    int   getAcceptAction(){ return ACCEPT_ACTION; }

    static const  int ERROR_ACTION = 352;
    int   getErrorAction(){ return ERROR_ACTION; }

    static const bool  BACKTRACK = false;
    bool  getBacktrack() { return BACKTRACK; }

    int  getStartSymbol() { return lhs(0); }
    bool  isValidForParser()  { return snooperKWLexersym.isValidForParser; }


     static  const List<int> _isNullable = [0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0
        ];
       bool isNullable(int index){ return  snooperKWLexerprs._isNullable[index] != 0; }

     static  const List<int> _prosthesesIndex = [0,
            2,1
        ];
       int prosthesesIndex(int index){ return  snooperKWLexerprs._prosthesesIndex[index]; }

     static  const List<int> _isKeyword = [0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0
        ];
       bool isKeyword(int index){ return  snooperKWLexerprs._isKeyword[index] != 0; }

     static  const List<int> _baseCheck = [0,
            3,2,4,5,4,6,4,4,4,2,
            4,3,2,4,4,5,11,11,10,11,
            9,5,5,3,7,8,8,13,2,3,
            5,6,10,10,6,7,4,4,5,6,
            7,9,15,17,19,21,6,8,6,8,
            5,6,8,2,12,13,12,14,9,7,
            14,8,8,5,4,3,24,5
        ];
       int baseCheck(int index){ return  snooperKWLexerprs._baseCheck[index]; }
     static const List<int> _rhs = snooperKWLexerprs._baseCheck;
    int    rhs(int index){ return snooperKWLexerprs._rhs[index]; }

     static  const List<int> _baseAction = [
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            71,44,106,121,119,123,52,60,17,35,
            37,63,26,64,69,77,84,86,124,79,
            50,82,29,127,128,132,97,58,130,134,
            89,138,139,140,142,141,143,149,151,152,
            154,158,57,159,165,157,163,167,169,92,
            99,170,173,172,176,101,100,180,178,182,
            186,184,188,189,192,193,194,201,197,202,
            205,207,209,213,208,210,214,215,219,220,
            217,223,225,226,232,235,230,242,240,238,
            244,246,254,256,258,250,260,264,247,259,
            267,268,270,110,269,271,276,272,278,279,
            286,280,288,284,290,292,297,299,300,302,
            305,308,310,311,312,313,315,316,318,113,
            319,327,323,324,328,331,334,335,336,337,
            346,338,339,343,349,350,353,356,359,361,
            362,363,366,367,368,370,375,376,377,380,
            381,382,384,385,386,389,393,391,395,404,
            405,399,407,409,411,413,417,421,423,424,
            412,418,429,114,425,430,431,435,438,442,
            439,445,447,448,450,452,454,455,456,457,
            464,465,466,467,468,470,471,475,473,477,
            482,478,488,485,491,492,493,497,498,500,
            506,483,499,504,508,509,513,515,519,517,
            511,521,525,528,531,533,534,535,537,536,
            539,544,547,549,550,554,553,555,540,562,
            565,566,568,569,558,573,575,571,576,584,
            586,578,580,591,582,587,594,597,23,595,
            601,602,603,604,605,607,606,609,616,610,
            352,352
        ];
       int baseAction(int index){ return  snooperKWLexerprs._baseAction[index]; }
     static const List<int>  _lhs =snooperKWLexerprs._baseAction;
   int   lhs(int index){ return snooperKWLexerprs._lhs[index]; }

     static  const List<int> _termCheck = [0,
            0,1,2,3,4,5,6,7,8,9,
            10,11,12,13,14,15,0,17,18,3,
            20,21,0,23,24,0,1,2,0,4,
            5,9,7,5,0,1,0,9,16,14,
            6,0,6,0,22,20,10,19,23,0,
            14,0,24,4,5,6,0,0,2,0,
            9,5,0,0,13,9,7,4,0,26,
            13,9,4,14,11,13,0,1,0,1,
            4,0,14,0,1,0,1,4,0,4,
            9,0,14,5,13,4,0,6,0,0,
            0,13,2,5,5,0,8,11,8,0,
            1,2,0,0,1,3,17,12,0,7,
            0,1,0,0,1,7,0,0,1,0,
            4,0,10,0,21,2,5,0,0,0,
            0,0,0,1,15,4,8,8,0,12,
            0,0,4,0,14,5,0,0,0,1,
            7,4,0,12,0,1,0,5,0,0,
            2,0,0,17,2,0,10,0,9,0,
            1,0,5,0,9,0,1,0,0,8,
            19,0,0,0,11,8,0,4,7,7,
            0,0,2,15,0,4,0,0,0,0,
            14,3,0,0,0,11,0,11,0,0,
            8,8,0,1,0,0,17,20,10,0,
            11,0,1,19,0,1,7,0,22,0,
            15,0,1,0,5,0,0,23,3,0,
            7,2,15,0,1,0,1,0,0,0,
            14,4,3,0,1,7,0,0,0,0,
            0,0,2,6,5,0,1,0,0,0,
            12,15,11,0,6,0,1,0,0,0,
            3,0,9,16,5,16,0,6,0,0,
            1,0,6,2,0,7,2,0,1,0,
            0,0,0,2,0,0,6,0,0,10,
            3,7,0,0,12,10,0,0,2,2,
            0,8,10,0,0,0,0,0,0,6,
            10,6,0,25,10,0,10,2,0,0,
            13,3,0,1,16,0,1,15,0,10,
            0,0,0,2,2,0,0,0,1,0,
            5,2,14,7,0,0,0,3,18,0,
            0,0,1,0,0,0,10,8,0,6,
            0,0,0,3,0,15,12,9,0,5,
            25,16,10,0,0,2,0,3,0,1,
            0,0,0,3,16,3,0,0,2,13,
            0,1,0,0,0,3,15,4,0,0,
            0,3,0,4,0,1,19,0,0,15,
            3,0,12,2,0,1,0,0,10,0,
            1,0,5,0,0,0,0,3,3,13,
            4,8,11,0,0,0,0,0,2,0,
            0,1,0,9,0,1,0,0,9,14,
            17,0,0,16,0,13,10,0,1,8,
            0,0,0,16,3,11,0,0,0,0,
            18,11,3,0,7,0,1,0,0,13,
            0,19,0,15,0,8,0,3,0,11,
            0,18,2,11,0,7,16,0,4,13,
            0,4,0,0,0,0,0,3,0,0,
            8,5,7,0,11,2,0,17,0,0,
            4,3,0,0,0,17,17,0,9,6,
            8,0,1,9,0,0,2,0,0,12,
            0,6,0,6,0,0,8,0,6,0,
            6,0,12,0,1,0,0,1,3,14,
            0,12,2,0,0,18,0,16,4,3,
            0,0,0,0,0,0,0,3,0,0,
            9,5,4,20,12,0,0,17,0,0,
            0,16,0,0,21,0,0,12,0,0,
            0,22,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0
        ];
       int termCheck(int index){ return  snooperKWLexerprs._termCheck[index]; }

     static  const List<int> _termAction = [0,
            352,92,83,78,76,85,77,80,82,88,
            89,91,90,84,74,86,352,79,87,100,
            81,73,352,75,72,352,112,114,352,109,
            113,339,108,132,352,102,352,133,396,110,
            101,352,105,352,340,111,104,131,406,352,
            103,352,130,126,127,128,352,352,376,352,
            381,154,352,352,97,153,98,365,352,351,
            382,106,117,99,115,107,352,118,352,125,
            119,352,116,352,120,352,121,362,352,122,
            129,352,124,140,354,160,352,159,352,352,
            352,141,168,162,170,352,161,137,167,352,
            209,208,352,352,275,229,169,93,352,228,
            352,94,352,352,123,95,352,352,135,352,
            134,352,96,352,276,139,136,352,352,352,
            352,352,352,147,138,145,143,144,352,142,
            352,352,148,352,146,149,352,352,352,155,
            151,152,352,150,352,156,352,158,352,352,
            418,352,352,157,164,352,364,352,163,352,
            171,352,172,352,166,352,174,352,352,173,
            165,352,352,352,175,176,352,179,178,389,
            352,352,180,177,352,182,352,352,352,352,
            181,185,352,352,352,183,352,184,352,352,
            186,188,352,192,352,352,187,417,367,352,
            190,352,195,189,352,196,366,352,191,352,
            194,352,197,352,198,352,352,193,200,352,
            363,360,199,352,201,352,202,352,352,352,
            205,361,203,352,204,206,352,352,352,352,
            352,1,359,207,357,352,355,352,352,352,
            210,390,211,352,213,352,214,352,352,352,
            215,352,216,212,217,403,352,218,352,352,
            375,352,219,368,352,220,416,352,221,352,
            352,352,352,224,352,352,223,352,352,222,
            227,374,352,352,225,226,352,352,231,234,
            352,233,232,352,352,352,352,352,352,236,
            235,238,352,230,237,352,239,391,352,352,
            356,242,352,244,240,352,245,241,352,243,
            352,352,352,404,248,352,352,352,251,352,
            249,252,246,250,352,352,352,253,247,352,
            352,352,258,352,352,31,255,256,352,259,
            68,352,352,262,352,257,260,358,35,263,
            254,384,261,352,352,392,352,264,352,266,
            352,352,352,267,388,268,352,352,269,265,
            352,377,352,352,352,270,272,271,47,352,
            352,274,352,278,352,280,273,49,352,277,
            281,352,279,282,352,412,352,352,283,352,
            286,352,285,352,352,352,352,379,378,284,
            289,288,287,352,352,352,352,352,415,352,
            352,293,352,291,352,294,352,352,292,405,
            290,352,352,400,352,295,296,352,414,297,
            352,41,352,402,300,298,352,352,352,352,
            411,299,304,352,303,352,305,352,352,302,
            352,301,352,373,352,307,352,310,352,308,
            352,306,313,309,352,311,394,352,386,312,
            352,314,352,352,352,352,352,318,352,352,
            316,319,320,352,317,371,352,315,352,352,
            385,322,352,352,352,321,326,352,323,324,
            325,352,370,372,352,352,369,352,352,330,
            352,327,352,328,352,352,329,352,331,352,
            332,352,407,352,380,57,352,413,334,333,
            352,408,336,352,352,335,43,410,341,338,
            352,352,352,352,45,352,352,346,352,352,
            343,347,348,337,344,352,352,342,352,352,
            352,398,352,352,345,352,352,349,352,352,
            352,419
        ];
       int termAction(int index){ return  snooperKWLexerprs._termAction[index]; }
      int  asb(int index) { return 0; }
      int  asr(int index) { return 0; }
      int  nasb(int index)  { return 0; }
      int  nasr(int index)  { return 0; }
      int  terminalIndex(int index)  { return 0; }
      int  nonterminalIndex(int index)  { return 0; }
      int  scopePrefix(int index)  { return 0;}
      int  scopeSuffix(int index)  { return 0;}
      int  scopeLhs(int index)  { return 0;}
      int  scopeLa(int index)  { return 0;}
      int  scopeStateSet(int index)  { return 0;}
      int  scopeRhs(int index)  { return 0;}
      int  scopeState(int index)  { return 0;}
      int  inSymb(int index)  { return 0;}
      String  name(int index) { return ""; }
   int  originalState(int state){ return 0; }
     int asi(int state ){ return 0; }
     int   nasi(int state ){ return 0; }
     int   inSymbol(int state){ return 0; }

    /**
     * assert(! goto_default);
     */
    int ntAction(int state,  int sym){
        return snooperKWLexerprs._baseAction[state + sym];
    }

    /**
     * assert(! shift_default);
     */
     int  tAction(int state,  int sym){
        var i = snooperKWLexerprs._baseAction[state],
            k = i + sym;
        return snooperKWLexerprs._termAction[ snooperKWLexerprs._termCheck[k] == sym ? k : i];
    }
    int   lookAhead( int la_state ,  int sym){
        var k = la_state + sym;
        return snooperKWLexerprs._termAction[ snooperKWLexerprs._termCheck[k] == sym ? k : la_state];
    }
}
